/**
 * @file timer_storage.h
 * @brief 定时器存储接口头文件
 * 
 * 定义了定时器配置的持久化存储接口，
 * 提供了统一的存储抽象层，支持不同的存储实现。
 */

#ifndef __TIMER_STORAGE_H__
#define __TIMER_STORAGE_H__

#include "smart_timer.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 定时器存储接口结构体
 * 
 * 定义了定时器配置持久化存储所需的基本操作接口。
 * 不同的存储实现（如NVS、文件系统等）需要实现这些接口。
 */
typedef struct {
    /**
     * @brief 初始化存储系统
     * @return timer_err_t 操作结果
     */
    timer_err_t (*init)(void);

    /**
     * @brief 反初始化存储系统
     * @return timer_err_t 操作结果
     */
    timer_err_t (*deinit)(void);

    /**
     * @brief 保存定时器配置到存储
     * @param timers 定时器配置数组
     * @param count 定时器数量
     * @return timer_err_t 操作结果
     */
    timer_err_t (*save_timers)(const timer_config_t *timers, uint8_t count);

    /**
     * @brief 从存储加载定时器配置
     * @param timers 定时器配置数组
     * @param count 输入时表示数组大小，输出时表示实际加载的定时器数量
     * @param max_count 最大允许加载的定时器数量
     * @return timer_err_t 操作结果
     */
    timer_err_t (*load_timers)(timer_config_t *timers, uint8_t *count, uint8_t max_count);
} timer_storage_t;

/**
 * @brief NVS存储实现实例
 * 
 * 基于ESP32 NVS（非易失性存储）的定时器配置存储实现。
 */
extern const timer_storage_t nvs_storage;

#ifdef __cplusplus
}
#endif

#endif // __TIMER_STORAGE_H__
